/*This file is part of WZLibCP.

 *  WZLibCP is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

 *  WZLibCP is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

 *  You should have received a copy of the GNU General Public License
    along with WZLibCP.  If not, see <http://www.gnu.org/licenses/>.
		
	Author: calc0000
*/
#ifndef __WZLIB_WZPRIMITIVEPROPERTIES_H
#define __WZLIB_WZPRIMITIVEPROPERTIES_H
#include "WZLibConfig.h"

#include <string>

#include "WZImageProperty.h"
#include "WZBinaryReader.h"

namespace WZLib{
	class WZNullProperty:public WZImageProperty{
	public:
		ctor WZNullProperty(WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_Null,name,WZObject::Property){}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZUnsignedShortProperty:public WZImageProperty{
	public:
		unsigned short value;
		ctor WZUnsignedShortProperty(unsigned short value=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_UnsignedShort,name,WZObject::Property){this->value=value;}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZCompressedIntProperty:public WZImageProperty{
	public:
		int value;
		ctor WZCompressedIntProperty(int value=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_CompressedInt,name,WZObject::Property){this->value=value;}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZVectorProperty:public WZImageProperty{
	public:
		WZCompressedIntProperty* xprop;
		WZCompressedIntProperty* yprop;
		ctor WZVectorProperty(int x=0,int y=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_Vector,name,WZObject::Property){this->xprop=new WZCompressedIntProperty(y,parent,name);this->yprop=new WZCompressedIntProperty(x,parent,name);}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZFloatProperty:public WZImageProperty{
	public:
		float value;
		ctor WZFloatProperty(float value=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_Float,name,WZObject::Property){this->value=value;}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZDoubleProperty:public WZImageProperty{
	public:
		double value;
		ctor WZDoubleProperty(double value=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_Double,name,WZObject::Property){this->value=value;}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
	class WZStringProperty:public WZImageProperty{
	public:
		std::string value;
		ctor WZStringProperty(std::string value=0,WZImage* parent=NULL,std::string name=""):WZImageProperty(parent,Prop_String,name,WZObject::Property){this->value=value;}
		ErrorCode parse(WZBinaryReader* reader){return Error_WZLib_WZPrimitiveProperty_InvalidCall;}
	};
};

#endif